package cn.sdut.training.utils;

import java.util.List;

/**
 * 分页信息
 * 
 * @author tyg
 * 
 */
@SuppressWarnings("unchecked")
public class PageView {

	// 传递的参数或配置的值
	private int currentPage; // 当前页
	private int pageSize; // 每页显示的记录数量

	// 查询数据库
	private int recordCount; // 总记录数
	private List recordList; // 本页的数据列表

	// 计算
	private int pageCount; // 总页码
	private int beginPageIndex; // 页码列表的开始的索引
	private int endPageIndex; // 页码列表的结束的索引

	/**
	 * 传递4个必要的属性值，并计算出其他3个属性的值
	 * 
	 * @param currentPage
	 * @param pageSize
	 * @param recordCount
	 * @param recordList
	 */
	public PageView(int currentPage, int pageSize, int recordCount, List recordList) {
		this.currentPage = currentPage;
		this.pageSize = pageSize;
		this.recordCount = recordCount;
		this.recordList = recordList;

		// 计算出这3个值：pageCount, beginPageIndex, endPageIndex
		pageCount = (recordCount + pageSize - 1) / pageSize;

		// 总页码<=10个，显示所有页码
		if (pageCount <= 10) {
			beginPageIndex = 1;
			endPageIndex = pageCount;
		} else {
			// 显示当前页附近的共10个页码（前4个+后5个）
			beginPageIndex = currentPage - 4;
			endPageIndex = currentPage + 5;

			// 前面不足4个时，显示前10个页码
			if (beginPageIndex < 1) {
				beginPageIndex = 1;
				endPageIndex = 10;
			}
			// 后面不足5个时，显示后10个页码
			else if (endPageIndex > pageCount) {
				endPageIndex = pageCount;
				beginPageIndex = pageCount - 10 + 1;
			}
		}
	}

	public List getRecordList() {
		return recordList;
	}

	public void setRecordList(List recordList) {
		this.recordList = recordList;
	}

	public int getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getPageCount() {
		return pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getRecordCount() {
		return recordCount;
	}

	public void setRecordCount(int recordCount) {
		this.recordCount = recordCount;
	}

	public int getBeginPageIndex() {
		return beginPageIndex;
	}

	public void setBeginPageIndex(int beginPageIndex) {
		this.beginPageIndex = beginPageIndex;
	}

	public int getEndPageIndex() {
		return endPageIndex;
	}

	public void setEndPageIndex(int endPageIndex) {
		this.endPageIndex = endPageIndex;
	}

}
